package com.ruoyi.infoManagement.service.Impl;

import com.ruoyi.common.core.domain.entity.Regexregisteredservice;
import com.ruoyi.infoManagement.mapper.RegexregisteredserviceMapper;
import com.ruoyi.infoManagement.service.IRegexregisteredserviceService;
import com.ruoyi.infoManagement.utils.CheckUrlUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 【请填写功能名称】Service业务层处理
 *
 * @author ruoyi
 * @date 2022-03-23
 */
@Service
public class RegexregisteredserviceServiceImpl implements IRegexregisteredserviceService {
  @Autowired
  private RegexregisteredserviceMapper regexregisteredserviceMapper;

  /**
   * 查询【请填写功能名称】
   *
   * @param id 【请填写功能名称】主键
   * @return 【请填写功能名称】
   */
  @Override
  public Regexregisteredservice selectRegexregisteredserviceById(Long id) {
    return regexregisteredserviceMapper.selectRegexregisteredserviceById(id);
  }

  /**
   * 查询【请填写功能名称】列表
   *
   * @param regexregisteredservice 【请填写功能名称】
   * @return 【请填写功能名称】
   */
  @Override
  public List<Regexregisteredservice> selectRegexregisteredserviceList(Regexregisteredservice regexregisteredservice) {
    return regexregisteredserviceMapper.selectRegexregisteredserviceList(regexregisteredservice);
  }

  /**
   * 新增【请填写功能名称】
   *
   * @param regexregisteredservice 【请填写功能名称】
   * @return 结果
   */
  @Override
  public Map insertRegexregisteredservice(Regexregisteredservice regexregisteredservice) throws MalformedURLException {
    HashMap<Object, Object> data = new HashMap<>();
    String url = regexregisteredservice.getLogoutUrl();
    if (url==null||url=="") {
      data.put("msg", "url不能为空");
      data.put("code", 500);
      return data;
    }
    boolean isUrl = CheckUrlUtils.isURL(url);

    if (!isUrl) {
      data.put("msg", "url格式不正确");
      data.put("code", 500);
      return data;
    }
    Regexregisteredservice svc = regexregisteredserviceMapper.findServiceByLogoutUrl(url);

    if (svc != null) {
      data.put("msg", "这个url已存在");
      data.put("code", 500);
      return data;
    }
    if (regexregisteredservice.getName()==null||regexregisteredservice.getName()==""){
      data.put("msg", "必须填写系统名称");
      data.put("code", 500);
      return data;
    }
    //serviceId,可以配置为正则匹配
    String a = "^" + url + ".*";
    regexregisteredservice.setServiceid(a);
    regexregisteredservice.setExpressionType("regex");
    regexregisteredservice.setEvaluationOrder((long) 1000);
    int num = regexregisteredserviceMapper.insertRegexregisteredservice(regexregisteredservice);
    if (num > 0) {
      data.put("msg", "添加成功");
      data.put("code", 200);
      List<Regexregisteredservice> list = regexregisteredserviceMapper.selectRegexregisteredserviceList(new Regexregisteredservice());
      data.put("RegisteredServiceList", list);
    }
    return data;
}

  /**
   * 修改【请填写功能名称】
   *
   * @param regexregisteredservice 【请填写功能名称】
   * @return 结果
   */
  @Override
  public Map updateRegexregisteredservice(Regexregisteredservice regexregisteredservice) {
    HashMap<Object, Object> data = new HashMap<>();
    String url = regexregisteredservice.getLogoutUrl();
    if (url==null||url=="") {
      data.put("msg", "url不能为空");
      data.put("code", 500);
      return data;
    }
    boolean isUrl = CheckUrlUtils.isURL(url);
    if (!isUrl) {
      data.put("msg", "url格式不正确");
      data.put("code", 500);
      return data;
    }
    if (regexregisteredservice.getName()==null||regexregisteredservice.getName()==""){
      data.put("msg", "必须填写系统名称");
      data.put("code", 500);
      return data;
    }
    String serviceId = "^" + url + ".*";
    regexregisteredservice.setServiceid(serviceId);
    int num= regexregisteredserviceMapper.updateRegexregisteredservice(regexregisteredservice);
    if (num > 0) {
      data.put("msg", "修改成功");
      data.put("code", 200);
      List<Regexregisteredservice> list = regexregisteredserviceMapper.selectRegexregisteredserviceList(new Regexregisteredservice());
      data.put("RegisteredServiceList", list);
    }
    return data;
  }

  /**
   * 批量删除【请填写功能名称】
   *
   * @param ids 需要删除的【请填写功能名称】主键
   * @return 结果
   */
  @Override
  public int deleteRegexregisteredserviceByIds(Long[] ids) {
    return regexregisteredserviceMapper.deleteRegexregisteredserviceByIds(ids);
  }

  /**
   * 删除【请填写功能名称】信息
   *
   * @param id 【请填写功能名称】主键
   * @return 结果
   */
  @Override
  public int deleteRegexregisteredserviceById(Long id) {
    return regexregisteredserviceMapper.deleteRegexregisteredserviceById(id);
  }
}
